/*
用户信息获取：
  1：定义接口api
  2:在vuex的user模块导入api
  3:定义state,mutations,actions
  4:在导入守卫中调用actions获取用户信息
*/

import router from '@/router'
import store from '@/store'
import { cancelAll } from '@/utils/request'
const whitePage = ['/login', '/404']
router.beforeEach(async(to, from, next) => {
  cancelAll()
  /*
   判断用户是否登录（token）
       登录了
          判断要去的页面是不是登录页
               是登录页
                  去首页
               不是登录页
                  放行：正常进入
       没登录
          创建一个白名单页面
          如果要去的页面是白名单页面内
              放行：正常进入
          不是白名单
              跳转到登陆页
*/
  console.log('beforeEach')
  if (store.state.user.token) {
    if (to.path.toLowerCase() === '/login') {
      next('/')
    } else {
      // console.log('1')
      // 在这调用接口获取用户信息
      if (!store.state.user.userInfo.userId) {
        await store.dispatch('user/getUserInfo')
        next(to)
      } else {
        next()
      }
    }
  } else {
    if (whitePage.includes(to.path.toLowerCase())) {
      next()
    } else {
      next('/login')
    }
  }
})
// 已到达某路由
router.afterEach((to, from) => {
/*
store.state.routes.list
   判断它内部是否有to的path
       有：不理
       没有：添加
*/
  const _index = store.state.routes.list.findIndex(item => item.path === to.path)
  if (_index === -1) {
    store.commit('routes/setList', [...store.state.routes.list, to])
  }
})
router.beforeResolve((to, from, next) => {
  console.log('beforeResolve')
  next()
})
